Method and system of facilitating on-line shopping using an internet browser

ABSTRACT

A method of modifying an Internet browser interface to provide shopping assistant functionality facilitating on-line shopping at a supported merchant Internet site. A wallet created in accordance with the present invention comprises a database having various user data stored therein under certain predetermined field names. A supported merchant data file identifies a plurality of supported merchants and enables the modified browser interface to determine when a shopper has navigated to a supported merchant web site. For each supported merchant, a rules and mapping file is created that may be used in connection with the wallet to map user-provided information in the wallet to corresponding fields in the merchant&#39;s check-out web page. When a user navigates to a supported merchant web site and desires to purchase merchandise and/or services from that merchant, the wallet automatically fills out the merchant&#39;s check-out web page(s), thereby simplifying on-line shopping and particularly, the check-out process.

CROSS-REFERENCE TO RELATED APPLICATION

[0001] This application is a Continuation-In-Part of U.S. patentapplication Ser. No. 09/429,585, filed on Oct. 28, 1999, currentlypending.

FIELD OF THE INVENTION

[0002] The present invention is directed to a method and system offacilitating on-line shopping using an Internet browser.

BACKGROUND OF THE INVENTION

[0003] When accessing the Internet (i.e., the worldwide web, the web,etc.), an Internet user typically launches or activates, via a computer,a browser software program such as, for example, Netscape Navigator™ orMicrosoft Internet Explorer™. The browser program (also referred toherein as a browser) establishes a physical link to the Internet (via amodem and an Internet Service Provider (ISP), for example) and alsoprovides a textual and graphical user interface, i.e., a browserinterface, having a predetermined look and functionality, neither ofwhich can currently be significantly changed by the Internet user. Thus,the browser interface remains relatively static as the Internet usernavigates the Internet, moving from web site to web site, application toapplication, or HTML (Hyper-text Mark-up Language) page to HTML page.

[0004] Limited control of the browser interface is currently availablevia an executable software program that may, for example, add functionalbuttons to the browser interface. However, the additional functionalityis added to the browser interface when the browser is initiallyactivated and remains static thereafter. Thus, it is not possible for abrowser displaying a browser interface modified as just-described todynamically download information from an Internet site and customizeitself, either when the browser is initiated or as the users navigatesthe Internet. Such a modified browser interface also does not provideaccess to the various browser Application Programming Interfaces (APIs)for Plug-ins and interfaces. It is thus desirable to provide a methodfor modifying a browser interface, and to provide a browser interface,that overcomes the above-described shortcomings of the prior art.

[0005] The proliferation of Internet sites makes it increasinglydifficult for content providers (i.e., owners of Internet sites) tomaximize the time an Internet user spends at a particular Internet site.It is, of course, desirable for a content provider to be able tomaximize the time an Internet user spends at that provider's Internetsite, or to ensure that an Internet user returns to the contentprovider's site; this being generally referred to in the art asstickiness. Many business models for companies providing Internet sitesare based, at least in part, on revenue derived from advertising. Themore likely a user is to remain at or return to an Internet site, themore likely that user is to see ads displayed at that site.Consequently, the company providing that Internet site may be able tocharge more for ads on its web pages.

[0006] It is also desirable to maximize the number of Internet usersaccessing a content provider's site. Briefly stated, an Internet contentprovider wants to attract a maximum number of Internet users to thatprovider's Internet site, and to maximize the amount of time thoseInternet users remain at that site; neither of which is possible usingcurrent Internet browsers.

[0007] Of the many benefits of the Internet, on-line shopping providesdistinct advantages over traditional shopping. Obviously, the ability toeasily visit a multitude of merchant web sites, browse their respectivemerchandise, compare prices, and place orders, from home or office andin a relatively short period of time, saves the on-line shopper time andmoney. In addition, shoppers who may find it difficult to visit a numberof stores (due to weather, lack of proximately located stores, or forwhatever reason), now have an almost unlimited number of stores andmerchandise available at their fingertips.

[0008] The on-line shopping experience is relatively quick. A shoppermay navigate from merchant-site to merchant-site, browse merchandise,and select and place items in an electronic shopping cart, all with afew mouse clicks. However, the check-out process remains relatively timeconsuming and labor intensive. Once a shopper has finished shopping, thecheck-out process may be initiated by selecting a “Check Out” option onthe merchant's web site. The shopper is then typically required to fillin various personal data, including name, billing and shipping address,credit card number, etc. The shopper has to repeatedly provide thatinformation to each merchant to complete an on-line shoppingtransaction, which increases the likelihood of error (by the shopper inproviding the information) and slows the on-line shopping process.

SUMMARY OF THE INVENTION

[0009] The present invention is directed to a method of dynamicallycontrolling an Internet browser interface and to a dynamicallycontrollable browser interface. In an embodiment of the presentinvention, a shopping assistant button and shopping assistantfunctionality is added to the browser interface and available to a user(e.g., an on-line shopper) to provide a faster and more accurate on-lineshopping process.

[0010] The present invention is also directed to a method of increasingthe number of times an Internet user accesses a predetermined Internetsite, and to a method of increasing the amount of time an Internet userspends at a predetermined Internet site.

[0011] As used herein, the term controlling and controllable refer to,by way of non-limiting example, adding to, removing from, and modifyingan Internet browser interface. An Internet browser interface, asreferred to herein, means the visual or aural presentation presented toa browser user, and via which a user interacts with the browser. Theterm customize (and variations thereof) may also be used herein todescribe the controllability provided in accordance with the presentinvention. As used herein, the term dynamically controlling (andvariations thereof) refers to a method by which a part of an Internetbrowser interface (i.e., an interface object) may be displayed andperiodically changed or updated while a browser displaying the interfaceobject is activated.

[0012] A browser, as used herein, is given its general, art recognizedmeaning, and generally refers to a software program that provides aninterface to the World Wide Web or Internet. The browser enables anInternet user to navigate the Internet and establish a connection tovarious Internet sites and view the web page(s) provided at the variousInternet sites by content providers. A browser is specifically capableof calling an ActiveX control or Plug-in via an Internet site. Thebrowser also enables an Internet user to navigate between and amongInternet sites, i.e., to surf the web. The browser provides a browserinterface to the Internet user that is formatted by the provider of thebrowser software program. The browser interface typically defines thelayout (e.g., color, size, number and location) and functionalityprovided by the browser to the Internet user. The browser interface maycomprise a first parent window that typically defines the general size,color, and layout of the browser interface and includes window controlbuttons (e.g., minimize, close, etc.). The browser interface may alsocomprise a second parent window (a child to the first parent window),and one or more windows dependent from the second parent (i.e.,children). The second parent and its dependent windows may provide, forexample, various information (e.g., advertisements, coupons, news, HTMLlinks, etc.) and functionality (i.e., toolbars, pull-down menus,Plug-ins, applications, etc.) to the Internet user.

[0013] An ActiveX control, as used herein, refers to a tool for linkingdesktop applications for the Internet and is based on art recognized,Microsoft-developed specifications. A Plug-in, as used herein, refers toa type of program developed for use with Netscape browsers and thatintegrates with a larger application (e.g., a browser software program)to add a specific functionality or capability to that larger program. AnActiveX control and a Plug-in as described above and as referred toherein may be used with any Internet browser.

[0014] As used herein, the term Internet site refers to a location(i.e., node) on the Internet defined by an Internet address or URL(uniform or universal resource locator). As used herein, the termInternet web page refers to a collection of hypertext markup language(HTML) commands provided at an Internet site and that provide formattinginformation for the text, graphics, and functionality to create ahypertext document that may be displayed on an Internet user's computerdisplay via a browser. For example, an Internet user enters a URL toestablish a connection to an Internet site, and that Internet siteprovides HTML commands to the user's browser to enable display of thatInternet site's web page on the user's computer display. The browserinterprets hypertext markup language (HTML) commands embedded in a webpage and uses the HTML commands to format the text and graphics for thatweb page.

[0015] The present invention provides advantages to an Internet user, anInternet content provider, and to an Internet Service Provider (ISP).For an Internet user, the present invention provides a method ofdynamically controlling or customizing that user's Internet browserinterface. The Internet user may now customize the browser interface sothat each time the user accesses the Internet using a browser,user-defined information and/or functionality (also collectivelyreferred to herein as information) will be displayed with the browserinterface. For example, the user may include bookmarks, address andphone books, personal financial information, personalized news, andvarious functionality such as is available via ActiveX control andPlug-ins.

[0016] In addition, if an Internet user has an account with a contentprovider, that user's specific account information (e.g., investmentportfolio, news headlines, bookmarks, address book, etc.) may now bedynamically displayed with the browser interface by the browser.Currently, an Internet user can only access that user's specific accountinformation while connected to the content provider's Internet site. Theuser must return to the content provider's site to receive updatedaccount information. The account information is not displayed with thebrowser interface once user leaves that Internet site. The presentinvention provides a method of dynamically controlling and a dynamicallycontrollable browser interface that enables an Internet user to displaywith the browser interface and continuously update information and/orfunctionality specific to that user.

[0017] For a content provider, the present invention ensures that anInternet user (via a browser) automatically establishes a connection tothat content provider's Internet site every time that user accesses theInternet using a browser. Thus, as soon as an Internet user causes abrowser to execute (by selecting a browser icon, for example), thebrowser automatically establishes a connection to the content provider'sInternet site to load that user's customized browser interfaceinformation. The present invention may also periodically andautomatically cause the user's browser to connect to the contentprovider's Internet site while the browser is active, i.e. while theuser surfs the web. In one embodiment, the content provider may providean Internet user with access to a program for controlling the browserinterface. Once the Internet user has accessed that controlling programto customize that user's browser interface, a connection to that contentprovider may be automatically established by that user's browser everytime that user accesses the Internet. Thus, and in contrast to currentlyavailable browsers which establish a connection to an Internet site onlywhen the user enters a URL (or otherwise positively acts to cause aconnection to be established such as, for example, by selecting a linkor banner advertisement), the present invention automaticallyestablishes a connection to the content provider when the browser isinitiated, independent of any home web page selection pre-programmedinto the browser, whether by the Internet user or browser vendor. Oncethat initial connection is established, the content provider may loaduser-specific information and/or functionality to the Internet user'scomputer for display with that user's browser interface.

[0018] In addition, the content provider can also periodically cause thebrowser to automatically reconnect to that content provider's Internetsite to update, download new, or otherwise communicate informationand/or functionality for the Internet user's browser interface. Forexample, if an Internet user subscribes to an email service of thecontent provider, email messages for that Internet user received by thecontent provide may be automatically communicated to the Internet usereven though the user is “surfing” elsewhere. When the user's browserinitially establishes a connection to the content provider's Internetsite upon execution of that user's browser, the information communicatedby the content provider to the Internet user includes instructions forthe browser to periodically reconnect to the content provider's Internetsite. Thus, regardless of the number of Internet sites the useraccesses, and regardless of the particular Internet site currentlyaccessed by a user, a connection back to the content provider's Internetsite will be automatically established at intervals determined by thecontent provider; those reconnections being transparent to the Internetuser except when the user receives a notification from the contentprovider (i.e., new mail has arrived). Thus, the browser interface maybe dynamically controlled as the Internet user surfs the web. For anISP, the benefits are at least as great as for a content provider.

[0019] Initially, the browser interface for an Internet user must becustomized using a software program that may be provided by the contentprovider or ISP, or that may be available on the user's computer. Thesoftware program, referred to hereinafter as a controlling program or aprogram for controlling (and other variations thereof), changes themanner in which the user's browser functions. More specifically, thecontrolling program downloads or creates a library file on the Internetuser's computer. The library file may be, for example, a Dynamic LinkLibrary (DLL) (for a Windows operating system) that creates a shell (orplurality of shells) within the browser and within which variousinformation and/or functionality may be loaded as an ActiveX control orPlug-in. The library file includes ActiveX control or Plug-infunctionality that defines an interface object added to the browserinterface in accordance with the present invention. When an Internetuser launches or activates a browser, the library file is opened and theActiveX control or Plug-in code contained within that file is madeavailable to the browser and incorporated into the browser interface,thus causing the interface object to be displayed with the browserinterface. The library file, and consequently, the shell (or shells),remain open as long as the browser is activated, generally as long asthe user is surfing the web. Thus, the information and/or functionalityfor customizing the browser interface and loaded in the shell remainactive even as the user moves from Internet site to Internet site. Whenused in this context herein, the terms information and functionalityrefer to any information, data, and/or software-driven functionalitythat can be contained in or part of the library file.

[0020] The library file also causes the browser to establish aconnection to the content provider's Internet site when the browser isinitially activated by the user. The content provider's Internet sitewill load information and/or functionality for the interface object tothe user's computer for use in the browser and for display in thebrowser interface. The information and/or functionality loaded by thecontent provider may be specific to an Internet user if, for example,that user has an account with the content provider. Alternatively, thecontent provider may load general information and/or functionality if,for example, the Internet user does not have an account with the contentprovider (i.e., is a guest).

[0021] The present invention uses an object linking and embedding (OLE)in-process server to control the information and/or functionality of abrowser interface. Using an ActiveX control or a browser Plug-in (eachbeing referred to herein as a browser interface overlay (BIO) Library)contained in a library file, virtually any information and/orfunctionality available with an ActiveX control or Plug-in may be addedto a browser interface using the present invention. The library file(via the BIO Library) thus includes the code required to customize,i.e., add, remove and/or modify, the browser interface.

[0022] Once an Internet user has accessed the controlling program andcustomized the operation of that user's browser, the customized browserinterface is displayed when the browser is activated. In contrast toprior art browser modification methods, the present invention provides amethod and browser interface that may be dynamically controlled. Updatedor changed information and/or functionality may be communicated to thebrowser and displayed in the browser interface as the Internet usersurfs the web and while maintaining the customized information and/orfunctionality of the browser interface. Thus, an Internet user mayautomatically receive up-to-date information such as, for example, stockquotes, email, new headlines, at that user's browser interface, at anyInternet site and as long as the user is surfing the web using thebrowser.

[0023] The present invention also provides a method and system offacilitating on-line shopping by modifying a browser interface toprovide a shopping assistant button and functionality. The modifiedbrowser interface provided in accordance with this embodiment of thepresent invention simplifies on-line shopping by creating a wallet foreach shopper or user. The wallet is stored in a database on a secureserver and may be accessed, used, or modified only by the user and onlyin connection with a user-provided security key. The wallet containsuser-supplied information that may be directly ported to a supportedmerchant check-out web page. Thus, when a user is shopping on-line at asupported merchant's web site, and desired to purchase certainmerchandise and/or services from that merchant, the present inventionprovides the user with access to his/her wallet and facilitates portingof the data contained in the wallet to quickly and effortlessly fill outthe merchant's order forms provided at the merchant's check-out webpages.

[0024] Other objects and features of the present invention will becomeapparent from the following detailed description, considered inconjunction with the accompanying drawing figures. It is to beunderstood, however, that the drawings are designed solely for thepurpose of illustration and not as a definition of the limits of theinvention, for which reference should be made to the appended claims.

BRIEF DESCRIPTION OF THE DRAWINGS

[0025] In the drawing figures, which are merely illustrative, andwherein like reference characters denote similar elements throughout theseveral views:

[0026]FIG. 1 depicts a view of a prior art Internet browser interface;

[0027]FIG. 2 depicts a view of an Internet browser interface includingan interface object in the browser toolbar in accordance with anembodiment of the present invention;

[0028]FIG. 3 depicts a view of an Internet browser interface having aninterface toolbar including interface object in accordance with anembodiment of the present invention;

[0029]FIG. 4 depicts a view of an Internet browser interface having aninterface toolbar including a plurality of interface objects inaccordance with an embodiment of the present invention;

[0030]FIG. 5 is a flow diagram of a method of controlling an Internetbrowser interface in accordance with the present invention;

[0031] FIGS. 6-9 are a flow diagrams of a method of controlling anddisplaying an Internet browser interface in accordance with variousembodiments of the present invention;

[0032]FIG. 10 is a schematic block diagram of a computer connected tothe Internet and upon which the present invention may be implemented;

[0033]FIG. 11 is an exemplary screen shot of an Internet browserinterface having a shopping assistant button in accordance with anembodiment of the present invention;

[0034]FIG. 12 is an exemplary screen shot of a wallet set-up web page inaccordance with an embodiment of the present invention;

[0035]FIG. 13 is an exemplary screen shot of a wallet data entry webpage in accordance with an embodiment of the present invention;

[0036]FIG. 14 is an exemplary screen shot of a wallet summary web pagein accordance with an embodiment of the present invention;

[0037]FIG. 15 is an exemplary screen shot of a security key window inaccordance with an embodiment of the present invention;

[0038]FIG. 16 is an exemplary screen shot of a wallet information windowin accordance with an embodiment of the present invention; and

[0039]FIG. 17 is an exemplary screen shot of supported merchantcheck-out web page in accordance with an embodiment of the presentinvention.

DETAILED DESCRIPTION OF THE PRESENTLY PREFERRED EMBODIMENTS

[0040] The present invention is directed to a method of controlling anddisplaying an Internet browser interface, and to a controllable Internetbrowser interface. In accordance with the present invention, a browserinterface may be customized using a controlling software program thatmay be provided by an Internet content provider, an ISP, or that mayreside on an Internet user's computer. The controlling software programenables the Internet-user, the content provider, or the ISP to customizeand control the information and/or functionality of a user's browser andbrowser interface.

[0041] The present invention also provides a method and system offacilitating on-line shopping by modifying a browser interface toprovide a shopping assistant button and functionality. The modifiedbrowser interface provided in accordance with this embodiment of thepresent invention simplifies on-line shopping by creating a wallet foreach shopper or user. The wallet is stored in a database on a secureserver and may be accessed, used, or modified only by the user and onlyin connection with a user-provided security key. The wallet containsuser-supplied information that may be directly ported to a supportedmerchant check-out web page. Thus, when a user is shopping on-line at asupported merchant's web site, and desired to purchase certainmerchandise and/or services from that merchant, the present inventionprovides the user with access to his/her wallet and facilitates portingof the data contained in the wallet to quickly and effortlessly fill outthe merchant's order forms provided at the merchant's check-out webpages.

[0042] Referring now to the drawings in detail, FIG. 10 is a blockdiagram of a computer 50 connected to the Internet 90 and upon which thepresent invention may be implemented. Computer 50 includes an internalbus 64 that facilitates communication of information (i.e., digitaldata) between and among the various devices of the computer 50 and thatalso facilitates communication between the computer and external devicesand systems via a communication interface 68. A processor 66 coupled tothe bus 64 process information within the computer 50. The computer 50also includes a main memory 60 such as, for example, Random AccessMemory (RAM) or other equivalent dynamic memory storage device, coupledto bus 64 for receiving and storing instructions communicated from theprocessor 66. Main memory 60 may also be used to temporarily storevariable or other intermediate information while the processor 66executes instructions. Read-Only-Memory (ROM) 62 is also coupled to thebus 64 for storing static data and instructions for use by the processor66. Various input and output devices are provided as part of thecomputer 50, including, by way of non-limiting example, a display 54(e.g., cathode ray tube (CRT), liquid crystal display (LCD), etc.), aninput device 56 such as a keyboard, and a cursor control device 58 suchas a mouse, or trackball, for example. A data storage device 52 such as,for example, a magnetic disk drive and magnetic disk, a CD-ROM drive andCD-ROM, or other equivalent devices and data storage mediums, is coupledto the bus 64 for communication with the processor 66, main memory 60,and communication interface 68. The storage device 52 preferably has anoperating system 70 and an Internet browser software program 72 (i.e., abrowser) stored thereon. As will be discussed in greater detail below, alibrary file 74 may also be stored on the data storage device 52.

[0043] The computer 50 may connect to the Internet 90 via thecommunication interface 68 over a transmission media including, but notlimited to, coaxial cable, copper wires, and fiber optical cables.Communication between the computer 50 and the Internet 90 may also bevia a wireless or cellular interface. The communication interface 68facilitates two-way communication between the computer 50 and anotherelectronic device or system, e.g., a server computer (not shown)provided by a content provider 100, 200.

[0044] An Internet user (not shown) using the computer 50 may gainaccess to the Internet 90 by causing the browser 72 to execute, therebyopening a communication link between the communication interface 68 ofthe computer 50 and an Internet site 130 of a content provider 100, viaan Internet Service Provider (ISP) 80. The browser 72 provides, to thecomputer display 54, a browser interface 20 (see, e.g., FIG. 1) having alayout (e.g., color, size, number, location) and functionality ofwindows 30 that is predetermined in the browser 72 by the browservendor. Internet content is communicated by the content provider 100 tothe computer 50 for display in a content window 32 of the browserinterface 20.

[0045] In accordance with an embodiment of the present invention, afirst Internet content provider 100 may provide an Internet user withaccess to a program 120 for controlling the browser 72 and browserinterface 20. When executed by the user, the controlling program 120downloads or creates a library file 74 such as, for example, a DynamicLink Library (DLL), on the data storage device 52 of the Internet user'scomputer 50. The library file 74 preferably includes ActiveX control orPlug-in functionality. Thereafter, when the Internet user accesses theInternet using the browser 72, the browser 72 opens the library file 74and preferably automatically establishes a connection to the contentprovider's Internet site 130. The content provider, in response to theconnection established by the browser 72, loads information and/orfunctional data into a shell operating within the browser and created bythe library file 74. For example, if the user has an account with thecontent provider 100, customized information and/or functionality may beloaded into the library file 74. If the user does not have an account,more generalized (i.e., guest) information and/or functionality may beloaded.

[0046] In accordance with the various embodiments of the presentinvention, as described in more detail herein, data may be communicatedbetween computers (e.g., between a server and a user or clientcomputer). The present invention contemplates that such datacommunication (or transmission/reception, download/upload, etc.) may becarried out in any manner using any medium, using any now known orhereafter developed medium or method.

[0047] The library file 74 essentially opens a shell (or a plurality ofshells) within the browser 72 that contains the ActiveX control orPlug-in code that may control, i.e., add, remove, and/or modify, theInternet browser 72 and the browser interface 20. When loaded with theActiveX control or Plug-in, the library file 74 preferably containsfunctions, objects, data, and other software, referred to generallyherein as information, that may be used to control the browser 74 andbrowser interface 20. The present invention ensures that the libraryfile 74 (and shell) does not close when the Internet user moves fromInternet site 130 to Internet site 230. Thus, the information and/orfunctionality provided via the ActiveX control or Plug-in is not lostwhen the Internet user disconnects from the Internet site that loadedthe ActiveX control or Plug-in, and connects to another Internet site.

[0048] Referring next to FIG. 1, a prior art Internet browser interface20 having a plurality of windows, each providing various functionalityto the Internet user, is there depicted. The browser interface 20 maycomprise a first parent window 30 that typically defines the generalsize, color, and layout of the browser interface and includes windowcontrol buttons 28 (e.g., minimize, close, etc.) for that window 30. Thebrowser interface 20 may also comprise a second parent window 36 (achild to the first parent window) within the first parent window 30, andone or more child windows 38 dependent from the second parent. Thesecond parent window 36 and child windows 38 typically defineinformation and/or functionality that will assist an Internet user whenaccessing and navigating the Internet. For example, the second parent 36and its dependent windows 38 may provide toolbars, pull-down menus,Plug-ins, applications, etc.

[0049] For example, three windows 38 provided at the top (in thedrawing) of the interface 20 define three toolbars 22, which may includea variety of interface controls 24 such as, for example, pull-downmenus, functional buttons (e.g., stop, back, forward, home, etc.), and acombination of functional buttons and windows (e.g., a search button andwindow). The uppermost toolbar 22 provides a plurality of pull-downmenus 24; the middle toolbar 22 provides a plurality of functionalbuttons 24; and the lowermost toolbar 22 provides a pull-down menu and awindow 26 (a URL address window). A content window 32 is also providedas part of the interface 20 within which content from an Internetcontent provider 100 (see, e.g., FIG. 10) may be displayed. The Internetuser may toggle any of the lower three (in the drawing) toolbars 22 onand off using a View toolbar object 24 (pull-down menu) provided in thesecond toolbar 22. However, the Internet user currently may not add,remove, or otherwise modify the browser interface 20.

[0050] An Internet browser 20 configured in accordance with variousembodiments of the present invention is depicted in FIGS. 2-4. In FIG.2, the browser interface 20 includes an interface object 40 that isdefined by the ActiveX control or Plug-in loaded in the library file 74by the content provider 100. The interface object 40 comprises apull-down menu 44 and is displayed in the browser toolbar 22 with theinterface controls (i.e., browser toolbar objects) 24 provided by thebrowser 72. In FIG. 3, an interface object 40 comprises an interfaceobject toolbar 42 and a pull-down menu 44 displayed as a separate window48 within the browser interface 20. In FIG. 4, an interface object 40comprises an interface toolbar 42 including a plurality of pull-downmenus 44 and a search window 46 displayed within a separate 48 withinthe browser interface 20. An interface object 40, in accordance with thevarious embodiments of the present invention, may comprise virtually anytype of information and/or functionality available via a browser. Thus,by way of non-limiting example, an interface object 40 may comprise apull-down menu, a toolbar and a pull-down menu, textual information(e.g., advertisements, coupons, etc.), textual and/or aural information(e.g., a textual advertisement with accompanying sound), textual, aural,and/or graphical (animated or not) information, video, video and audio,audio, etc.

[0051] The various embodiments of the inventive Internet browserinterface 20 depicted by FIGS. 2-4 are merely illustrative, non-limitingexamples of the present invention. Variations to the depicted browserinterfaces 20 may be possible in accordance with the teachings providedherein.

[0052] Referring next to FIG. 5, a method of controlling an Internetbrowser interface 20 is there depicted in accordance with an embodimentof the present invention, and designated generally as 500. At step 510,an Internet user accesses a controlling program 120 via an Internet website 130, an ISP 80, or the user's computer 50. The controlling program120, when executed by an Internet user, provides that user with theability to thereafter control that user's Internet browser interface 20,as discussed in more detail below. The controlling program 120, at step520, downloads or creates a library file 74 on the Internet user'scomputer 50 that includes ActiveX control or Plug-in code that define aninterface object. Each time the Internet user launches or activates thebrowser 72, the library file 74 is opened and a connection isautomatically established to a predetermined Internet web site 110, onethat is preferably configured to communicate to the Internet user'scomputer 50, ActiveX control or Plug-in code for the interface object,as indicated at steps 530 and 540. The open library file 74 essentiallyprovides a shell within the browser 70 within which the functionalityprovided by the ActiveX control or Plug-in may be added to the browserinterface 20. Neither the library file 74 nor the shell close until thebrowser 72 is closed. At step 550, an interface object 40 is createdthat will be displayed in the browser interface 20; the informationand/or functionality of the interface object 40 is defined by theActiveX control or Plug-in. In accordance with the various embodimentsof the present invention, the interface object 40 remains displayed bythe browser 72 with the browser interface 20, as indicated at step 560,for as long as the user continues to surf the web, i.e., as long as thebrowser 72 is activated. Thus, the functionality added to the browser 72and browser interface 20 in accordance with the present invention is notlost as the Internet user surfs the web.

[0053] The present invention provides various embodiments forcontrolling the browser 72 and browser interface 20, described generallyabove with reference to FIG. 5, each of which will now be described indetail.

[0054] Referring next to FIG. 6 and with continued reference to FIG. 10,a description of an embodiment of a method of controlling and displayinga browser 72 and browser interface 20 in accordance with the presentinvention, designated generally as 600, will now be provided. Forpurposes of FIG. 6 and for the following discussion directed thereto, alibrary file 74 has already been downloaded or created on the Internetuser's computer 50, as discussed herein. At step 610, an Internet userlaunches or activates a browser 72 to initiate access to the Internet90. At step 620, the library file 74 is opened and a connectionautomatically established to a predetermined content provider, asindicated at step 630. The functionality defined by the ActiveX controlor Plug-in code of the BIO Library is communicated by the contentprovides to the user's computer 50, (i.e., to the library file 74) tocreate an interface object 40 which may be added to the browserinterface 20. The interface object 40 is displayed with the Internetbrowser interface 20, as indicated in step 640. The functionality of theinterface object 40, as defined by the ActiveX control or Plug-in code,remains with the Internet browser interface 20 as the Internet usertraverses the Internet 90, regardless of the number or type of Internetsites the user visits, and as long as user is accessing the Internet 90using the browser software program 72. When the Internet user moves fromone Internet site to another, as indicated at step 650, the presentinvention determines whether the interface object 40 has survived thatmove; whether it is still displayed by the browser 72 in the browserinterface 20, as indicated at step 652. If the interface object 40 isnot displayed in the browser interface 20 (i.e., if it has been removedfrom the browser interface 20 or otherwise terminated), the interfaceobject 40 is redrawn, as indicated in step 660. If the interface object40 has survived a user move from one Internet site to another andremains displayed in the browser interface 20, the present inventionalso determines, at step 654, if the browser 72 is active; since theinterface object 40 is only displayed in the browser interface 20 whenthe browser 72 is operational. If the browser 72 is not activated (ifthe user is no longer surfing the web), the interface object 40 isterminated and the library file 74 is closed, as indicated at step 670.If the browser 72 remains active, the present invention continues, atstep 652, to ensure that the interface object 40 is displayed with thebrowser interface 20. As the Internet user moves between and amongInternet sites, the present invention monitors the status of theinterface object 40 and ensures that it is displayed by the browser 72with the browser interface 20 as long as the user is traversing theInternet 90.

[0055] According to the embodiment depicted in FIG. 6, the presentinvention ensures that the interface object 40 is displayed by thebrowser 72 with the browser interface 20 when the Internet user leavesthe Internet web site 130 at which the BIO Library initially was calledand loaded to the user's computer 50. For example, when the userlaunches or activates the browser 72, a connection is automaticallyestablished to a first, predetermined Internet site 130 that ismaintained by a first content provider 100 and the BIO Library is loadedonto the user's computer 50. The functionality provided by the BIOLibrary is then available to the browser 72 via a shell created by thelibrary file 74. When the Internet user connects to a second Internetsite 230 maintained by a second content provider 200, the functionalityfor the interface object 40 will continue to be present in the browserinterface 20. In this embodiment, the present invention prevents thebrowser 72 or operating system 70 of the computer 50 from disabling thefunctionality of the BIO Library by unloading the library file 74 whenthe link to the first Internet site 130 is terminated.

[0056] For example, when the browser 72 initially connects to the firstInternet site 130, that site 130 communicates functional information inthe form of ActiveX control software code to the Internet user'scomputer 50 as a BIO Library, which is loaded into the library file 74.If the library file 74 is not explicitly instructed by the operatingsystem 70 or the browser 72 to close or unload when the connection tothe first Internet site 130 is terminated, the library file 74 willremain loaded, providing the desired functionality for the interfaceobject 40 in the browser interface 20, even after the connection to thefirst Internet site 130 is closed. Keeping the library file 74 loadedwhile the Internet user moves between and among various Internet sitesenables the loading of data, functions and objects outside of theActiveX control (which is only communicated to the Internet user 50 bythe first Internet site 130) but inside of the library file 74. As longas the library file 74 remains loaded, any data or objects created inthe library file 74 and outside of the ActiveX control will stay loadedand continue to function in the browser interface 20.

[0057] To keep the library file 74 open during surfing, after thebrowser 72 has connected to the first Internet site 130, and before thatconnection is terminated, a global object, object A, is created in theprogram heap of the Internet user's computer 50, not the callingfunction heap. Thus, the global object survives the completion of thecalling function. The global object may be created using the C++ newoperator, or by declaring a global object in the global declarations. Ineither case, the global object will survive termination of theconnection between the browser 72 and the first Internet site 130.

[0058] A global object thus defined remains functional after the ActiveXcontrol provided by the first Internet site 130 closes, i.e. after theinitial connection to the first Internet site 130 is terminated. Oncethe global object has been created, an interface is created using theglobal object. That interface will serve to, for example, remove,replace and/or add functionality to the browser 72 and browser interface20. The interface may be created as part of the global object, or by theglobal object allocating a new interface object 40. For example, theinterface object 40 may be created by creating, for example, aninterface object window 48 within a browser window 38 (see, e.g., FIGS.3 and 4), and adding it to the browser interface 20 as a child windowAlternatively, the browser interface 20 may be directly modified suchas, for example, by adding or modifying a browser toolbar 22 or abrowser toolbar object 24 in the browser interface 20. Yet anotheralternative is to create an object interface toolbar 42 that is separatefrom the browser interface 20, as depicted in FIG. 4.

[0059] Additionally, a pointer is required that is used to control thebrowser 72 and to instruct the browser 72 to establish a connection to apredetermined Internet site 130, for example. That pointer is preferablystored globally so that it is accessible by any function or object inthe library file 74 that sends commands to the browser 72. In MicrosoftInternet Explorer, for example, the IWebBrowser, IWebBrowser2, orIWebBrowserApp object linking and embedding (OLE) interface commands maybe used to create the pointer. Using Microsoft Foundation Class (MFC),for example, the pointer may be created using the GetClientSite memberof the COleControl class to retrieve a pointer from the first Internetsite 130, i.e., the Internet site which loaded the BIO Library. TheGetClientSite serves as the entry point for the browser 72 tocommunicate with the BIO Library. A GetContainer member of theIOleClientSite class returned by the previous step may be used to get apointer to a container for the BIO Library. The BIO Library's containeris a container within which an ActiveX control is loaded. An Internetbrowser interface 20 generally consists of several parts, including thebrowser toolbars 22 and the content window 32. A document object iscreated by the browser 72 for every web page an Internet user accessesand contains all of the data that appears in a particular web page. Thedocument object is also the container for the BIO Library. Thus, adocument object may also be referred to as a BIO Library's container.

[0060] A QueryInterface member of the IOleContainer class returned bythe previous step may be used to get a pointer to the IServiceProviderinterface, which may be used to locate any of the other interfaces thatare presented by the browser 72. Finally, a QueryService member of theIServiceProvider class returned by the previous step may be used to geta pointer to the IWebBrowserApp, IWebBrowser, or IWebBrowser2 interface,depending on the specific interfaces provided by the browser 72 thatcalled the BIO Library.

[0061] In an alternative embodiment, the present invention may be usedto modify the entire browser window 30. If the entire browser window 30is modified, as opposed to integrating an interface object 40 into anexisting browser window 38, the entire class for the modified browserwindow 30 may be subclassed or, alternatively, the specific browserwindow 38 may be subclassed. As used herein, the term subclassing awindow, also referred to as hooking a window, refers to the replacementof an original browser window message handling procedure for handlingall messages sent to a window, with a user-defined window messagehandling procedure. For example, a window may be subclassed using theMicrosoft Foundation Class (MFC) CWnd:SubclassWindow( ) function.Alternatively, a window may be subclassed using the call theSetWindowLong function (a Microsoft Windows function), with theGWL_WNDPROC argument (a Microsoft Windows constant). The pointerreturned by the SetWindowLong function call may be stored to theoriginal browser window message handling procedure for the subclassedwindow. This enables the BIO Library to intercept all messages passed toa window 30 or 38, and the BIO Library may interpret commands frominterface controls 24 including buttons, menus, etc., provided by thebrowser 72 or from interface objects 40 that have been added by the BIOLibrary in accordance with the present invention.

[0062] The user-defined window message handling procedure that the BIOLibrary provides and that replaces the original browser window messagehandling procedure is referred to herein as the BIO Procedure. Using theBIO Procedure for the browser 72, messages (e.g., commands) intended forthe browser 72 may be intercepted and modified, or replacement or newmessages (e.g., message handlers for the interface object 40) may becommunicated to the browser 72 by the BIO Procedure.

[0063] The present invention also ensures that the interface object 40has not been removed from the browser interface 20. For example, someInternet browsers 72 redraw the entire browser interface 20 when anInternet user accesses a new web site. While the global object may stillbe functional following such Internet movement by the user, theinterface object 40 will be removed from the browser interface 20 andthus, will not be displayed with the browser interface 20. To preventthis from occurring, messages (e.g., commands) from the browser 72 torepaint the browser interface 20 may be intercepted by the BIO Procedureand the interface object 40 may be redrawn immediately after the browserinterface 20 is redrawn. Alternatively, the presence of the interfaceobject 40 in the browser interface 20 may be periodically tested and ifnot present in the browser interface 20, the interface object 40 may beredrawn. Such periodic testing should preferably occur at intervals ofless than approximately one second.

[0064] As an example of the above-described embodiment (depicted in FIG.6), an ActiveX control is loaded as a BIO Library and adds menu items(and functionality) to the browser interface 20. The present inventioncreates an ActiveX control that dynamically creates a new global object,object A, which creates a new menu object (which may be an interfaceobject 40) with a desired functionality to be added to the browserinterface 20. The menu object 40 may be added to the browser interface20 using, for example, the instructions: AfxGetMainWnd( )→GetMenu()→AppendMenu( ), where the appended menu of the browser interface 20would include a popup menu that points to the menu object 40. Thebrowser interface window would then be subclassed and handle themessages for the menu object 40 handled by the BIO Procedure and themessages for the browser interface 20 being passed to the messagehandler for the browser 72. When the Internet user disconnects from thefirst Internet site 130 (e.g., leaves the web page containing theActiveX control), the ActiveX control will close, but the global object,i.e., object A, will remain in the program heap and continue to providethe desired functionality to the browser interface 20.

[0065] Instead of subclassing the browser window within which theinterface object 40 is added, object A, or one of its descendants, mayretain ownership of the interface object 40. Then, a message handler forthe interface object 40 may be created. For example, an interface object40 may be added to a browser toolbar 22 in accordance with theabove-described embodiment of the present invention, except thatownership of the interface object 40 is set using the MicrosoftFoundation Class SetOwner function to be object A or one of it'sdescendants.

[0066] With reference next to FIG. 7 and continued reference to FIG. 10,a description of an alternate embodiment of a method of controlling anddisplaying a browser interface 20 in accordance with the presentinvention, designated generally as 700, will now be provided. Forpurposes of FIG. 7 and for the following discussion directed thereto, alibrary file 74 has already been created on the Internet user's computer50, as described herein. At step 710, an Internet user launches oractivates a browser 72 to access the Internet 90. At step 720, thelibrary file 74 is opened on the user's computer 50, and a connection isautomatically established to a predetermined Internet site 130, asindicated at step 730. At step 740, the functionality defined by theActiveX control or Plug-in code of the BIO Library is communicated bythe content provider to the user's computer 50 (i.e., to the libraryfile 74) to create an interface object 40 which may be displayed in thebrowser interface 20 using a continuous loop to control the display ofthe interface object 40. The interface object 40 may only be removed(i.e., its functionality terminated) upon termination of the continuousloop. The functionality of the interface object 40, as defined by theActiveX control or Plug-in code, remains with the Internet browserinterface 20 as the Internet user traverses the Internet 90, regardlessof the number or type of Internet web sites the user visits, and as longas the browser 72 remains activated and as long as the Internet user isaccessing the Internet using that browser software program. When theInternet user moves from one web site to another, as indicated at step750, the present invention determines whether the interface object 40has survived that move, i.e., whether it is still displayed in thebrowser interface 20, as indicated at step 752. If the interface object40 is not displayed by the browser 72 in the browser interface 20 (i.e.,it has been removed from the browser interface 20 or otherwiseterminated), the interface object 40 is redrawn, as indicated in step760. If the interface object 40 has survived a user move from one website to another and remains displayed in the browser interface 20, thepresent invention also determines, at step 754, if the browser 72 isactive; since the interface object 40 is only displayed by the browser72 in the browser interface 20 when the browser 72 is operational. Ifthe browser 72 is not activated, the interface object 40 is terminatedand the library file 74 is closed, as indicated at step 770. If thebrowser 72 remains active, the present invention determined, at step756, whether the continuous loop has been terminated. If the loop hasbeen terminated, the interface object 40 is also terminated, asindicated at step 770. If the loop is still executing, the presentinvention determines whether the interface object 40 is still displayedin the browser interface 20, as indicated at step 752.

[0067] The embodiment of the present invention depicted in FIG. 7prevents an ActiveX control from unloading by freezing the operation ofthe library file 74 (within which the ActiveX control code is loaded),even if the operating system 70 or browser 72 generate an instruction tounload or terminate the library file 74. Because the library file 74 isfrozen and never finishes unloading, all of the data, functions andobjects created inside of the library file 74 by the ActiveX controlwill continue to exist and function after the library file 74 has beeninstructed to unload.

[0068] In some operating systems 70 and/or browsers 72, the BIO Librarywill be closed when the ActiveX control is no longer present at anInternet site. This can also occur when the Internet user moves from anInternet site having the ActiveX control, e.g., Internet site 130 inFIG. 10, to another Internet site that does not, e.g., Internet site 230in FIG. 10. To enable the interface object 40 to continue to operate inthe absence of the ActiveX control, the BIO Library (and the libraryfile 74) must be prevented from closing.

[0069] To accomplish this, a pointer is created that is used to controlthe browser 72. That pointer is preferably stored globally so that it isaccessible by any function or object in the library file 74 that mayneed to send commands to the browser 72. In Microsoft Internet Explorer,for example, the IWebBrowser, IWebBrowser2, or IWebBrowserApp OLEInterface commands may be used to create the pointer. To do this usingMicrosoft Foundation Class, the GetClientSite member of the COleControlclass (which may be used to communicate with the BIO Library) may beused to retrieve a pointer to the BIO Library's Internet site, i.e. thatInternet site that provides the ActiveX control. A GetContainer memberof the IOleClientSite class returned by the previous step may be used toget a pointer to the BIO Library's container. A QueryInterface member ofthe IOleContainer class returned by the previous step may be used to geta pointer to the IServiceProvider interface. The IServiceProviderinterface is used to easily find any of the other interfaces that arepresented by the browser 72. A QueryService member of theIServiceProvider class returned by the previous step may be used to geta pointer to the IWebBrowserApp, IWebBrowser, or IWebBrowser2 interfacedepending on the interfaces presented by the version of the browser 72that called the BIO Library.

[0070] To prevent the library file 74 from closing, its operation ishalted before it is able to terminate. To freeze or halt the operationof the library file 74, a continuous program loop may be created andexecuted that terminates only when the BIO Library is to be unloaded, atwhich time, the program loop also pumps the message queue The programloop is referred to herein as a message pump, and may be created usingfor example, the PeekMessage, GetMessage, TranslateMessage andDispatchMessage commands in a loop. Exemplary C++ code to carry out themessage pump is provided below: while (m_Continue)  {   if (PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE) ! = 0)   {    GetMessage(&msg, NULL, 0,0);    TranslateMessage(&msg);    DispatchMessage(&msg);   }  }

[0071] where m_Continue is a Boolean variable that is used to instructthe loop when to stop, and PeekMessage, GetMessage, TranslateMessage,and DispatchMessage are all Windows functions. If m_Continue equalsfalse, the loop will end, thus ending the message pump. The msg argumentis a reference to a Windows MSG structure.

[0072] The way the message pump preferably operates is that it checks tosee if there are any messages waiting in the message queue using thePeekMessage function. If there is a message, the message pump grabs themessage from the message queue using the GetMessage function andtranslates it from a virtual-key message into a character message usingthe TranslateMessage function. Finally, the message pump sends themessage to the original window message handling procedure that is due toreceive the message using the DispatchMessage function.

[0073] The built in capabilities of an operating system 70 may be alsoused to construct a message pump to pump the message queue. For example,a modal dialog box or message box, using a command such as the MFCcommand CWnd::MessageBox(“my modal”, MB_OK), serves this purpose welland may be used to provided the desired freezing or halting of theoperation of the library file 74.

[0074] As long as the message pump is executing a continuous loop, theActiveX control will not terminate, even when the Internet user accessesother Internet sites.

[0075] The embodiment of the present invention depicted by FIG. 7performs in the same manner (e.g., subclassing, message handling, etc.)as the above-described embodiment of FIG. 6.

[0076] For both of the above-described embodiments (of FIGS. 6 and 7),it is preferable, although not necessary, to provide an exit functionfor the interface object 40 so that object A and all of its descendantswill be closed. Possible exemplary scenarios for calling an exitfunction include intercepting the message to close the browser window inthe BIO Procedure, or periodically looking for the browser window and,if it is not found, terminating the ActiveX control.

[0077] Referring next to FIG. 8, yet another embodiment of the method ofthe present invention is depicted and designated generally as 800. Forpurposes of FIG. 8 and for the following discussion directed thereto, alibrary file 74 has already been created on the Internet user's computer50, as described herein. At step 810, an Internet user launches oractivates a browser 72 to access the Internet 90. At step 820, thelibrary file 74 is opened on the user's computer 50 and a connection isautomatically established to a predetermined Internet site 130 (see,e.g., FIG. 10), as indicated at step 830. At step 832, a new browserinterface is created that is a duplicate of the initial browserinterface provided by the browser 72. At step 840, a Function Window iscreated that represents the original browser interface within which thefunctionality of the Plug-in was initially loaded.

[0078] The steps for creating a Function Window in accordance with thisembodiment of the present invention are depicted in FIG. 8A anddesignated generally as 840. At step 842, the handle for the initialbrowser interface window is identified. The initial browser interfacewindow, now the Function Window, is hidden and/or disabled at step 844so that it cannot be closed, which would cause the BIO Library to crash.At step 846, a pointer is created that is used to control the browser72. Finally, a new browser interface window is created at step 848 thatmay be used by the Internet user to continue traversing the Internet.

[0079] With reference again to FIG. 8, and beginning at step 850, thebrowser interface may now be controlled by first subclassing any browserwindows, or any windows used by the browser, that are to be controlled,and then adding, deleting, and/or modifying the window(s) as describedin more detail below. The original browser window message handlingprocedure is replaced with a BIO Procedure (as defined above). At step860, the present invention determines whether any new browser windowshave been opened, i.e., windows that may not already be subclassed orthat may not have been controlled in accordance with the presentinvention. If new windows have been opened, the present inventiondetermines, at step 870, whether the interface object 40 is to be addedto those new windows. If not, the invention determines whether theInternet user desires to close the browser 72, as indicated at step 880.If so, the invention closes, at step 890, all browser windows, includingthe Function Window. If the user does not desire to close the browser72, as determined at step 880, the invention returns to step 860 andagain determines if new browser windows have been opened.

[0080] With continued reference to FIGS. 8, 8A and 10, theabove-described embodiment of the present invention will now bediscussed in more detail. When an ActiveX control is loaded by a contentprovider 100 via an Internet site 130, typically in response to abrowser 72 establishing a connection to that web site 130 and calling anActiveX control, a library file 74 located on the user's computer iscaused to open creating a shell within the browser 72 within which thecode for the ActiveX control may be loaded. If the library file 74 thatcontains the ActiveX control is explicitly instructed, by the operatingsystem 70 or the browser 72, to unload or close when the ActiveX controlis closed (when the user terminates the connection to the Internet site130), any data, functions or objects that have been created outside ofthe ActiveX control but in the library file 74 will be destroyed whenthe library file is 74 unloaded. To prevent the library file 74 fromunloading, the browser 72 is prevented from closing the ActiveX controluntil instructed. If the ActiveX control is never instructed to close,the library file 74 is never unloaded.

[0081] A preferred method of accomplishing this is to hide and/ordisable the initial browser interface window that loaded the ActiveXcontrol and to create a new copy of that same window within which theInternet user may continue to work and traverse the Internet. Becausethe initial browser interface is preferably hidden and/or disabled, theActiveX control cannot be closed until the library file 74 shows,enables or closes the initial browser interface window, i.e. the windowthat loaded the library file 74.

[0082] The above-described method of FIG. 8 preferably loads the BIOLibrary as a standard ActiveX control in a browser 74, using, forexample, the <Object> tag typically contained in a web page 130 or as aBand Object, and as described in the Microsoft Internet Explorer 4.xSoftware Development Kit. This instructs the browser 72 to initializeand run the library file 74 that contains the code for BIO Library.

[0083] The first time the BIO Library is initialized and called, aFunction Window is created that keeps the BIO Library open by keeping asession with the ActiveX control itself open while the Internet uservisits other Internet web sites 210, i.e., other web pages. The FunctionWindow also makes it possible for browser windows that do not have acopy of the BIO Library open to access the OLE interfaces to the browser72.

[0084] To create the Function Window, the initial browser interfacewindow (i.e., that window which loaded the BIO Library) is preferablyhidden and/or disabled. This may be accomplished by identifying thehandle of the initial browser interface window, beginning with thehandle of the BIO Library. To retrieve the initial browser interfacewindow handle from the handle of the BIO Library, the GetParent function(a Windows Function) is continuously called until the present value forthat function call represents one level below the desktop window. Forexample, a statement such as “m_Handle=GetParent(m_Handle)” executed ina loop may provide the desired functionality and result, where the valueof m_Handle is initially equal to the value for the handle of the BIOLibrary, and will eventually return the handle to the initial browserinterface window.

[0085] The next step is to hide and/or disable the initial browserinterface window, now referred to as the Function Window, so that theInternet user cannot close the Function Window (by closing the browser72, for example), thereby causing the BIO Library to unload and removingthe functionality provided by the BIO Library from the browser interface20. To hide the initial browser interface window from the user and/ordisable that browser window from user-driven events, WM_SHOWWINDOWand/or WM_ENABLE messages (both Windows constants) may be sent to theinitial browser interface window with values to hide and/or disable thebrowser window. For example, the PostMessage or SendMessage function(existing Windows functions) may be used to send a message to theinitial browser interface window with the browser window handle.Alternatively, the ShowWindow and EnableWindow functions (existingWindows functions) may be used to achieve the same result.

[0086] A pointer is created to control the browser 72. This pointer ispreferably stored globally so that it is accessible by any function orobject in the library file 74 that sends commands to the browser 72. InMicrosoft Internet Explorer for example, the IWebBrowser, IWebBrowser2,or IWebBrowserApp OLE interface may be used to create the pointer. To dothis using Microsoft Foundation Class for example, the GetClientSitemember of the COlecontrol class that serves as the entry point for thebrowser 72 may be used to communicate with the BIO Library, and toretrieve a pointer to the BIO Library's Internet site, i.e., thatInternet site 130 that loaded the ActiveX control. A GetContainer memberof the IOleClientSite class returned by the previous step may be used toget a pointer to the BIO Library's container. A QueryInterface member ofthe IOleContainer class returned by the previous step may be used to geta pointer to the IServiceProvider interface; with the IServiceProviderinterface preferably being used to find any of the other interfaces thatare presented by the browser 72. A QueryService member of theIServiceProvider class by in the previous step may be used to get apointer to the IWebBrowserApp, IWebBrowser, or IWebBrowser2 interfacedepending on the interfaces presented by the version of the browser 72that called the BIO Library.

[0087] Finally, a new browser window is created that the Internet usermay use to continue surfing the web, i.e., to continue accessing variousdifferent Internet sites, since the browser window previously used tocreate the Function Window has been hidden and/or disabled. Preferably,any of the IWebBrowser, IWebBrowser2, or IWebBrowserApp OLE interface isused to create a new browser window, for example, using the Navigate orNavigate2 members of that OLE interface. Alternatively, a WM_COMMANDmessage that corresponds to any command the browser 72 might use to opena new browser window such as a New Window command or Open In New Windowcommand, etc., may be sent to the browser 72. A new window may also beopened using the Dynamic Data Exchange (DDE) support provided by thebrowser 72.

[0088] The BIO Library must now add/delete/modify, i.e., control,various browser interface features and functionality. The first step isto subclass any of the browser windows or any of the windows the browseruses (i.e., children) that are to be controlled in accordance with thepresent invention. A BIO window message handling procedure is used toreplace the original window message handling procedure, and ishereinafter referred to as the BIO Procedure.

[0089] Once the browser window, or any of it's children, have beensubclassed, it is possible to add menus to a subclass by retrieving apointer to the browser window menu using the GetMenu function. Once thepointer to the menu's handle is obtained, the menu functions such asModifyMenu, AppendMenu, InsertMenu, etc., may be used to add any desiredmenus to the browser window. Any commands assigned to a menu must behandled by the BIO Procedure used to subclass the BIO window. The samecommand identifier must not be used in creating a menu as any that areincluded in the browser.

[0090] An interface object toolbar 42 may be added to the browserinterface 20 by retrieving the handle of the window to which the toolbar42 is to be added to (hereinafter referred to as the Frame Handle) usingstandard Windows functions. Typically, the window will be the BIO windowor a frame window that is a child of the BIO window. A window is thencreated using the Frame Handle as its parent. For example, to add adialog bar (which is a form of a toolbar) as an interface object 40, anobject derived from or of a type CDialogBar (a Microsoft FoundationClass) is created and it's Create method called using Frame Handle. Ifresources such as, for example, images, toolbars, dialogs, etc., arebeing used and the browser 72 does not share the same resources as theBIO Library, the browser's resources are temporarily replaced with theBIO Library resources before any data may be loaded from the BIO Libraryresource. The BIO Library resources may then be replaced with thebrowser's original resources.

[0091] As new browser windows are opened, it may be desirable to addinterface object(s) 40 to those new windows. A timer may be createdusing SetTimer Windows function that would call a user-defined functionand that function would use the FindWindowEx function (a Windowsfunction) to check every child of the desktop window for a window withthe same class name as the Function Window. For those browser windowsthat have not already been modified, i.e., that do not have theinterface object 40, the necessary handles may be retrieved and the samechanges made as were made for the original BIO Window.

[0092] Finally, when the Internet user desires to close the browser 72,it must be determined if all of the browser windows are closed, exceptthe Function Window, and the Function Window must also be closed if allother browser windows are closed. This may be accomplished by listeningfor a WM_CLOSE message (a Windows constant) in the BIO message handlingprocedure or by setting a timer that periodically determines how manybrowser windows are open. To close the original Function Window, aWM_CLOSE message may be sent to that window.

[0093] Referring next to FIG. 9, another alternative embodiment of amethod of controlling and displaying an Internet browser interface 20 inaccordance with the present invention is depicted and generallydesignated as 900.

[0094] Steps 910, 920, and 930 are essentially the same as describedabove for the embodiments of FIGS. 6-8. At step 940, a new browserinterface window is created and the initial browser interface window ishidden and/or disabled, and referred to as a Function Window. ThePlug-in identifies the handle for the initial browser interface window,hides and/or disables that window, and creates a new browser interfacewindow that may be used by the Internet user. At step 950, all thebrowser windows are subclassed, and then the browser interface may becontrolled, as indicated at step 960, for all open windows. At step 962,the present invention determines if any new browser windows have beenopened, in which case the invention returns to step 960. In no newbrowser interface windows have been opened, step 962 proceeds to step964 to determine if the Internet user desires to close the browser. Allwindows must be closed prior to closing the Function Window, and that isdetermined at step 966. If all windows are closed, the Function Windowis closed, as indicated at step 970. Otherwise, step 966 returns to step964.

[0095] In yet another alternative embodiment of the present invention,the present invention provides a method of controlling an Internetbrowser interface using a browser Plug-in to control (i.e., add, removeand/or modify) the functionality of the calling browser 72 and to retainthe Plug-in functionality after the user leaves the Internet site 130that loaded the Plug-in.

[0096] When a browser Plug-in is loaded to an Internet user's computer50 in response to a browser 72 establishing a connection to an Internetsite 130 and calling the Plug-in, a library file 74 establishes a shellwithin the browser 72 and within which the code for the Plug-in may beloaded. If the library file 74 is explicitly instructed by the operatingsystem 70 or the browser 72 to unload when the Plug-in is closed, anydata, functions or objects that have been created outside of the Plug-inbut in the library file 74, will be destroyed when the library file 74is unloaded. To prevent the library file 74 from unloading, the browser72 is prevented from closing the Plug-in until the browser 72 receivesan instruction to close the Plug-in. If the Plug-in is never instructedto close, the library file 74 also is never instructed to unload. Thismay be accomplished by hiding and/or disabling the initial browserwindow that loaded the Plug-in and by creating a new copy of that samewindow for the Internet user to continue to use to access and traversethe Internet. Because the initial browser window is preferably hiddenand/or disabled, the Plug-in can not be closed until the library file 74chooses to show, enable or close the initial browser window that loadedthe Plug-in.

[0097] For example, a browser Plug-in is loaded as a standard Plug-in ina browser 72, preferably by using the <Embed> tag in a web page 110 (seee.g., FIG. 10), which instructs the browser 72 to initialize and loadthe library file 74 that contains the code for the Plug-in (i.e., theBIO Library).

[0098] The first time the BIO Library is initialized and called, aFunction Window is created by hiding and/or disabling the originalbrowser window, thus preventing the BIO Library from unloading bykeeping a session with the Plug-in itself open. The Function Window alsomakes it possible for browser windows that do not have a copy of the BIOLibrary open to access built-in Application Programming Interfaces(APIs) for Plug-ins (i.e., functionality made available to the Internetuser through the browser interface 20 and via the Plug-infunctionality), such as those provided with Netscape Navigator andMicrosoft Internet Explorer.

[0099] A Function Window is preferably created by disabling or hidingthe initial browser window (in which the Plug-in resides) the first timethe Plug-in is called by the browser 72. To do this the Plug-in mustfirst identify the handle of the initial browser window. A window memberof the NPWindow structure is passed to the BIO Library from the browser72 as a second argument to the NPP_SetWindow Function and is the handleto the Plug-in window (NPWindow and NPP_SetWindow are part of theNetscape and Internet Explorer API for Plug-Ins). To retrieve theinitial browser window handle from this window member, the GetParentfunction (a Windows function) is continuously called until the presentvalue for that function call represents one level below the desktopwindow. For example, a statement such as “m_Handle=GetParent(m_Handle)”executed in a loop may provide the desired functionality and result,where the value of m_Handle is initially equal to the value for thehandle of the NPWindow structure, and will eventually return the handlefor the initial browser window.

[0100] The initial browser window is then hidden and/or disabled so thatthe Internet user cannot close the Function Window and cause the BIOLibrary to crash. To hide the initial browser window from the userand/or disable that window from user-driven events, WM_SHOWWINDOW and/orWM_ENABLE messages (both Windows constants) may be sent to the initialbrowser window with values to hide and/or disable that browser window.This can be accomplished by, for example, using the PostMessage orSendMessage function (Windows functions) to send a message to theinitial browser window using the browser window handle. Alternatively,the ShowWindow and EnableWindow functions (Windows functions) may beused to achieve the same results.

[0101] The final step is to create a new browser window that theInternet user can use to continue surfing the web after the initialbrowser window has been hidden and/or disabled. This may beaccomplished, for example, by calling any of the following Netscape andInternet Explorer Plug-in API functions: NPN_GetURL, NPN_PostURL,NPN_GetURLNotify, NPN_PostURLNotify, with the target parameter set to_new, _blank, or any window name that does not already exist. The NPPargument of the above functions is the NPP structure that was providedby the browser 72 to the Plug-in for the Function Window. Another way ofdoing this is to send a WM_COMMAND message to the browser 72 thatcorresponds to any command the browser 72 might use to open a new windowsuch as a New Window command or Open In New Window command, for example.A new window may also be opened using the Dynamic Data Exchange (DDE)Support provided by the browser. NPN_GetURL, NPN_PostURL,NPN_GetURLNotify, NPN_PostURLNotify and the NPP structure are part ofthe Netscape and Internet Explorer API for Plug-Ins and the WM_COMMANDis a Windows constant.

[0102] The BIO Plug-in may now control, i.e., add/delete/modify,features and functionality of the browser 72. The first step is tosubclass any of the browser windows or any of the windows the browseruses (collectively, BIO windows) that are to be controlled in accordancewith the present invention.

[0103] After the browser window or any of it's children has beensubclassed, menus may be added to the browser interface 20 by retrievinga pointer to the browser window menu using the GetMenu function (aWindows function). Once the pointer to the menu's handle is obtained,the menu functions such as ModifyMenu, AppendMenu, InsertMenu, etc.(Windows functions), may be used to add any desired menus to the browserwindow. Any commands assigned to a menu must be handled by the BIOmessage handling procedure used to subclass the BIO window, taking carenot to use the same command identifier in creating a menu as anyincluded in the browser 72.

[0104] Alternatively or additionally, an interface object toolbar 42 maybe added to the browser interface 20 by retrieving the handle of thewindow to which the toolbar 42 is to be added (hereinafter referred toas the Frame Handle) using standard windows functions—typically thewindow will be the BIO window or a frame window that is a child of theBIO window. A window is then created using the Frame Handle as itsparent. For example, to add a dialog bar (which is a form of a toolbar)as an interface object 40, an object derived from or of type CDialogBar(a Microsoft Foundation Class) may be created and it's Create methodcalled using the Frame Handle. If resources such as, for example,images, toolbars, dialogs, etc., are being used and the browser 72 doesnot share the same resources as the BIO Library, the browser's resourcesare temporarily replaced with the BIO Library resources before any datafrom the BIO Library resource may be loaded. The BIO Library resourcesmay then be replaced with the browser's original resources.

[0105] As new browser windows are opened, the interface object 40 may beadded to those new windows. This may be accomplished by creating a timerusing SetTimer (a Windows function) that would call a user-definedfunction that would use the FindWindowEx function (a Windows function)to check every child of the desktop window for a window with the sameclass name as the Function Window. For those new windows that do notalready have the modified interface, i.e., that do not include theinterface object 40, the necessary handles are retrieved and the samechanges made to those windows as were made to the original BIO window.

[0106] Finally, when the Internet user wishes to close the browser 72,it must be determined if all of the browser windows are closed exceptthe Function Window, and if they are, the Function Window may be closed.This may be accomplished, for example, by listening for a WM_CLOSEmessage (a Windows constant) in the BIO window message handlingprocedure or by setting a timer that periodically checks the number ofopen browser windows. The original Function Window may be closed bysending it a WM_CLOSE message.

[0107] In accordance with the present invention, a BIO Library (i.e., aPlug-in) may be loaded and its functionality provided in the browserinterface 20, automatically, i.e., without requiring the user topositively access a particular Internet site, i.e., to surf to a webpage that calls the Plug-in. For example, Netscape has a key in itswindows registry identified as Automation Startup. Upon activation,Netscape loads all of the OLE controls that are listed in the AutomationStartup key. By placing a reference or a call to the library file 74(and thus to BIO Library and Plug-in that defines an interface object40) in the Automation Startup key, the library file may be loaded everytime a user launches or activates a Netscape browser. Included in thatlibrary file 74 may be instructions to create an instance of theinterface object 40 in the browser interface 20 and an instruction forthe browser 72 to establish a connection to a predetermined Internetsite 130. Using this technique, a user does not have to choose to visita specific Internet site 130 to load a BIO Library. The library file 74needs to be kept open at least until the Plug-in may be loaded in thebrowser 72 for display and access via the browser interface 20. One wayto do this is to increment a reference counter associated with thelibrary file 74 so that when Netscape unload the OLE controls listed inthe Automation Startup key, the library file 74 will not be unloadedbecause it has a higher reference number.

[0108] The library file 74 may be loaded as a Plug-in using DDE toperiodically look for a Netscape DDE Server using a timer or a loop.When a return is received by the browser 72 from the Netscape DDEserver, Netscape is ready to receive commands and may be loaded with thePlug-in. DDE may then be used to send a command, such as WWW_OPENURL, tothe browser 72, which will cause the Plug-in to load as discussedherein.

[0109] Another method for hiding the Netscape Plug-in window that isused for BIO Library is to remove it from the task bar (i.e., where theWindows “Start” button is located) and place it off of the visiblescreen. One way to remove it from the Task Bar is to call SetWindowLongand change the window style of the Plug-in window to a toolbox window.Toolbox window's do not appear in the task bar. The Netscape Plug-inwindow may be placed off screen by calling MoveWindow and providingcoordinates that are not in the visible range for the users desktop.

[0110] The BIO window message handling procedure that is used to replacethe original browser message handling procedure must know which window amessage is intended to reach and what to do with a message once the BIOwindow message handling procedure receives that message. A preferred wayto do this is to create a map that links one piece of information toanother. For the present invention, a map that links window handles tostructures that contain important information to that window ispreferably used. For example when the BIO Library adds the interfaceobject 40 to a new browser window, a new entry in the map is createdthat links the BIO window's handle to a structure that containsinformation useful for that BIO window. One of the pieces of informationcontained in the structure would preferably be the browser's originalwindow message handling procedure for the BIO window. It is necessary tomaintain the browser's original window message handling procedure sothat if the BIO window message handling procedure does not know how tohandle a message, it can pass the message to the browser's originalwindow message handling procedure.

[0111] When a message is received by the BIO window message handlingprocedure, the first argument that is passed to the procedure is thehandle of the window that received the message. To retrieve thestructure that contains all of the data specific to that window, alookup in the map is performed using the window handle as a key. Thereturned structure will contain all of the stored window specificinformation, such as the original window message handling procedure.

[0112] When controlling the browser interface 20, i.e., adding to,removing from or modifying the browser interface, the present inventionchanges how the browser 72 works. Almost anything an Internet user cando with a browser works by sending a message to a browser's window orchild window. Objects or windows that send messages include the menus,buttons, combo boxes and almost anything else with which the Internetuser can directly interact, i.e., interface controls. Messages forexample can be broken up into four components: 1) the handle of thewindow intended to receive the message; 2) the msg value of the message;3) a wParam, whose use is usually dependent on the msg value; and 4) anIParam, whose value is also usually dependent on the value of the msgvalue.

[0113] For example, clicking on a button in a browser's window mightsend a message that contains the WM_COMMAND, which is a Windowsconstant, msg value to a browser window's window message handlingprocedure. The lower two bytes of the wParam variable in that messagewould then be a number that is used to identify which button waspressed.

[0114] By subclassing a browser's window or child window, as describedabove, any messages that are sent when a user interacts with any of theinterface controls may be intercepted. Once a message is intercepted,the BIO window message handling procedure can interpret it and react toit. If the functionality of the interface control is to remain the same(i.e., not added to, deleted from, or modified by the presentinvention), the message may be passed back to the original windowmessage handling procedure. In this way, virtually all of the interfacecontrols that exist in the browser 72 may be controlled. In addition,interface controls may be added to the browser interface 20 and assignedcommand identifiers (which are passed in the wParam). The BIO windowmessage handling procedure can then interpret the wParam and provide thefunctionality of the Interface control that is to be added. In addition,functionality may be removed by simply having the inventive windowprocedure do nothing if it receives a command identifier associated withan interface control that is to be removed from the browser. Thatcommand may thus be prevented from passing to the browser window'soriginal message handling procedure.

[0115] Using the various embodiment of the present invention, asdiscussed in detail above, an Internet user may create a browserinterface 20 having user-defined interface controls. Then, by settingthe parent of the window for that browser interface 20 to a window thathas been subclassed, any message from the new (i.e., controlled) windowwill be handled in the BIO window message handling procedure. This canbe used to add any interface object 40 such as a toolbar, dialogbar,floating dialog etc., to the browser interface 20.

[0116] The following illustrative, non-limiting application examples areprovided to further describe the present invention. A Plug-in or ActiveXcontrol that stays persistent as an Internet user traverses the Internetmay add an interface object 40 to the browser interface 20 that enablesa user to download their “bookmarks” or “favorites” from a databaselocated on the Internet. The interface will be added directly into thebrowser interface and will allow the user to visit the “bookmarks” or“favorites” links that they downloaded, using the interface object 40provided by the Plug-in or ActiveX control. This interface object 40will serve a similar function to the current “favorites” or “bookmarks”menu items and toolbars on existing browsers. The beneficial differenceis that since the bookmarks will be downloaded from a database on theInternet, users have access to their bookmarks on any computer's browserthat is capable of loading the Plug-in or ActiveX control.

[0117] The present invention may also be used to generate revenue basedon placing advertising “links” included in the “favorites” or“bookmarks” on the browser interface 20 via the Plug-in or ActiveXcontrol. Consumer targeting could be based on, for example, informationstored in databases, such as name, age, sex, income, race, education andgeographic location, and preferences such as favorites and bookmarks orother preferences that are stored on the database or exist on thebrowser 72.

[0118] A Plug-in or ActiveX control that stays persistent as the usertraverses the Internet may be used to add an interface object 40 to thebrowser interface 20 that permits a user to download their “addressbook” from of a database located on the Internet. Such an interfaceobject 40 may be added directly into the interface of the browserinterface 20 and will allow the user to send e-mail as well as retrievestored information for contacts listed in their “address book”.

[0119] The present invention may also be used to earn revenue based onplacing advertising “links” included in the “address book” on aninterface object 40 of the Plug-in or ActiveX control. Consumertargeting could be based for example on information stored in databases,such as name, age, sex, income, race, education and geographic location,and preferences such as favorites and bookmarks or other preferencesthat are stored on the database or exist on the browser.

[0120] The present invention may use a Plug-in or ActiveX control to addan edit box on the browser interface 20 that allows a user to type asearch directly into the browser instead of having to visit a web pagethat allows the user to search.

[0121] Additionally, the Plug-in or ActiveX control that stayspersistent may poll, or periodically seek—at user, web site or programselected intervals—information from a preferred web site, even thoughthe user is surfing a different web site. As the preferred web site ispolled, the preferred web site can send updated information to theinterface object on the user's browser, such as near real-timenotification of the receipt of mail, continuous updating of stockprices, or other time sensitive information, such as, for example, newsfeed headlines, sports scores for selected favorite sports teams, andthe like. The preferred web site can control, if desired, the timing ofthe polling, so as to control the traffic at the preferred web siteduring peak usage periods by extending the time interval between polls.

[0122] Since the shell created by the library file, as described herein,is an environment within which applications can be run, or informationdisplayed, any information or program can be added to the interface ofthe browser using the present invention. The shell is independent of thebrowser interface, the content of the browser, and even the content ofthe shell itself. In short, the shell is an adaptable piece offunctionality that does not, in the extreme, even need to be visible tothe user. Thus, in use, the shell can be empty and receive its contentsfrom a web site, or the shell could get Plug-ins, or the shell couldeven get new library files and learn to parse new information “on thefly” as the shell receives new contents from a web site or user. Thusthe present invention provides significant opportunities to directdesired information from a preferred site to the user even as the uservisits other sites. Of course, the more user-specific functionalityprovided by a web site via the customizable interface of the presentinvention, the greater user loyalty that web site can engender.

[0123] In another embodiment of the present invention, and withreference now to FIGS. 11-17, a shopping assistant button may be addedto a toolbar of the Internet browser interface to facilitate on-lineshopping at a supported merchant web site. Functionality of thisembodiment, including defining the shopping assistant button, isprovided by computer code transmitted from a server and stored on theuser's computer. The computer code monitors the Internet navigation ofthe Internet browser to determine if the browser is at a supportedmerchant web site, provides an indicator for the shopping assistantbutton when the Internet browser is at a supported merchant web site,and fills out a supported merchant check-out web page.

[0124] As user herein, the term “on-line shopping” refers to the processby which a user of an Internet browser my purchase merchandise and/orservices over the Internet using a computer. An on-line merchant (e.g.,a seller of merchandise and/or services over the Internet) may provide aweb site hosted by a merchant server via which a user may access one ormore web pages using an Internet browser. Various merchandise and/orservices may be offered for sale by the merchant via the one or more webpages. A shopper may view the merchandise, description of the services,select various merchandise and/or services for placement into anelectronic shopping cart, view the contents of the shopping cart, andcheck-out (as described in more detail below).

[0125] The browser interface 20 depicted in FIG. 11 includes aninterface object 40 comprising an interface object toolbar 42 and ashopping assistant button 144 that provides various functionality to thebrowser interface 20, including, by way of non-limiting example, theability for a user (the terms user and shopper being usedinterchangeably herein) of the browser interface 20 to create and editan electronic wallet (discussed in more detail below), disable theshopping assistant button 144 (and shopping functionality from thebrowser interface 20), list supported merchants, query about theshopping assistant button 144, pull-down menu 44, and functionalityprovided by the shopping assistant button 144, and query for help aboutuse of the shopping assistant button 144 and the functionality providedthereby. Shopping assistant computer code or software (e.g., a .dll or.exe. file, javascript, etc.) is provided by a server and stored on theuser's computer 50 and operable in connection with the browser andbrowser interface 20 to define and provide the shopping assistant button144 and other functionality provided in accordance with the presentinvention, and as described in more detail below.

[0126] In a preferred embodiment, the shopping assistant button 144 andfunctionality provided thereby is provided when the interface object 40is added to the browser interface 20, as described in detail above withregard to the various embodiments of the present invention. That is,when the interface object 40 (i.e., toolbar) is added to the browserinterface 20, the shopping assistant button 144 and associated computercode are transmitted or downloaded to the user's computer 50.Alternatively, the shopping assistant button 144 and functionality maybe selectively added to the browser interface 20 upon request by theuser, i.e., before or after the interface object 40 is added.

[0127] The shopping assistant functionality provided in accordance withthis embodiment of the present invention is provided, at least in thefirst instance, by a server 102 (which may comprise one or morecomputers, located physically proximate each other, or physicallyseparate from each other) (see, e.g., FIG. 10) that may be accessed whenthe user provides a predetermined Internet address or URL in the URLaddress window 26 of the browser interface 20. The server 102 ispreferably a secure server (i.e., one that is only accessible via aSecure Socket Layer (SSL) connection). At that predetermined Internetaddress, the user may access one or more web pages, at least one ofwhich enables a user to set up a wallet in accordance with thisembodiment of the present invention. Exemplary wallet set-up web pagesare depicted in FIGS. 12-14 and discussed in more detail below.

[0128] The shopping assistant functionality is also provided by shoppingassistant computer code or software downloaded by the server 102 to theuser's computer 50 and operable in connection with the browser interface20 and shopping assistant button 144. The shopping assistant code may bea .dll or .exe file, for example, javascript, or other known types ofcomputer code or software files. The shopping assistant code monitorsthe Internet navigation of the Internet browser by intercepting theInternet address (or domain or URL) each time the user causes thebrowser to navigate to a different Internet address. The shoppingassistant code also compares the intercepted Internet address with theInternet addresses of supported merchants by comparing the interceptedaddress with a supported merchant file containing Internet addresses ofsupported merchants. The supported merchant file is preferablydownloaded by the server 102 and stored on the user's computer 50. Eachtime a user logs into the server 102, the server 102 compares itsversion of the supported merchant file with the version stored on theuser's computer 50 (that version information may me transmitted by theuser during the login process, for example). The server 102 downloads tothe user's computer an updated version of the supported merchant file,if necessary. The shopping assistant code also intercepts each web pagereceived by the browser and determines the type of web page (e.g.,billing web page, merchant home page, merchandise page, etc.) by theHTML code and http request headers.

[0129] The shopping assistant code also defines the shopping assistantbutton 144 and pull-down menu 44, and controls the communication betweenthe browser, the server 102 and the merchant server for on-lineshopping.

[0130] The shopping assistant button 144 may be provided as part of theinterface object 40 in accordance with the various embodiments of thepresent invention. However, for a user to utilize and access theshopping assistant functionality, the user must first set up a wallet.As used herein, the term “wallet” refers to a file (that may be encodedor encrypted) particular to a user and comprised of information (alsoreferred to herein as data) specific to that user, provided by thatuser, and stored in a wallet database 104 provided on a data storagedevice 106 (e.g., hard drive, optical disk, etc.) of the server 102(see, e.g., FIG. 10). The wallet database 106 is structured so that theinformation provided by the user when setting up the wallet is stored inpredefined fields or field names. Similarly, a supported merchant datafile is structured using the same fields or field names, to the extentthat the merchant check-out web page(s) require the same information aswas provided during the wallet set-up process.

[0131] To set up a wallet, the user must provide certain information inresponse to certain wallet set-up web pages provided by the server 102.It is known to persons skilled in the art that an Internet browserreceives data from a server, typically HTML data, for display by thebrowser interface 20. Thus, reference herein to web pages being providedby a server refers to the download or transmission of data from theserver for display by an Internet browser.

[0132] An exemplary wallet set-up web page is depicted in FIG. 12 andgenerally designated as 1000. That web page 1000 may be accessed, forexample, via the “edit wallet” option on the pull-down menu 44 of theshopping assistant button 144. By selecting a predetermined link on thewallet set-up web page 1000, such as, for example, a “Set up yourWallet” link 1002, a wallet data entry web page 1010, such as isdepicted in FIG. 13, is downloaded by the server 102. At the wallet dataentry web page 1010, the user enters certain information in a pluralityof fields 1012 (either pull-down menu or alpha-numeric entry). Theinformation may be, by way of non-limiting example, credit card type,number, expiration date, user's first and last name, billing address,phone number, user ID, user password, and various other informationparticular to the user. When setting up a wallet, each user is alsorequired to enter a security key (see, e.g., FIG. 16) which isnecessary, in addition to the user's ID and password, to access and usethe user's wallet. When the user has completely filled out all requiredfields 1012 in the wallet data entry web page 1010, the user may selecta “Finished” button (not shown), which transmits the user-enteredinformation to the server 102. In response, the server 102 downloads awallet summary web page 1020 that includes a summary 1022 of the user'snewly entered account information for review by the user prior tofinally setting up the user's wallet, as depicted in FIG. 14. If theuser information is correct, the user may select a link on the walletsummary web page 1020 such as, for example, a “Click here to continue .. . ” link 1024, that causes the user information (data) to betransmitted to the server 102 and stored in the wallet database 104 onthe data storage device 106. During the wallet set-up procedure justdescribed, data is being transmitted between the server 102 and theuser's computer 50 (see, e.g., FIG. 10). For example, web pages 1000(FIG. 12) and 1010 (FIG. 11) may both be transmitted by the server 102for display by the user's browser interface 20 when the user selects the“Set up your wallet” link 1002. When the user has completed theinformation required on the wallet data entry web page 1010 and selectsthe “Finished” button (not shown), the user information or data may betransmitted to the server 102. Upon receipt of the user information fromthe user's computer 50, the server 102 may transmit the wallet summaryweb page 1020. Alternatively, each of the above-described web pages maybe transmitted separately by the server 102 and in response to auser-initiated action (e.g., upon selection by the user of a link orbutton).

[0133] The server 102 may be that of a content provider 100 or otherInternet service provider such as, for example, a search engine provideror ISP, collectively referred to herein as the provider 100. On-linemerchants are selected by the provider 100 in connection with which theshopping functionality of the present invention may be used. A supportedmerchant file contains a list of all supported merchants, includingtheir respective Internet addresses. That file may be used by theshopping assistant computer code to determine if a user has navigated toa supported merchant web site by comparing the URL entered into the URLaddress window 26 (or provided in a link) with the urls contained in thesupported merchant file.

[0134] Once a merchant (a merchant is generally designated 200 in FIG.10) has been selected, the provider 100 determines the merchants'check-out process, including the layout of check-out web page(s) (see,e.g., FIG. 17), and information required to complete the merchant'scheck-out process and check-out web page(s). The provider 100 creates asupported merchant rules and mapping file for each selected merchant(also referred to herein as a supported merchant) that defines aplurality of merchant field names that correspond to the user datarequired by the merchant during its check-out processes and itscheck-out web page(s). For example, and with reference to FIG. 17, asupported merchant check-out web page 2100 requires that a shopperprovide billing information including, for example, payment method,credit card number, expiration date, and personal information for theshopper (e.g., name, address and telephone number). The merchant fieldnames correspond to wallet field names defined in the user's wallet.Each supported merchant rules and mapping file may contain differentmerchant field names, as each merchant may require different informationduring its check-out process. However, all merchant field namescorrespond to wallet field names.

[0135] The supported merchant rules and mapping file maps the walletdata (i.e., wallet field names) to the required merchant data (i.e.,merchant field names). For example, an entry in the merchant rules andmapping file defining a first name field and last name field may bestructured as follows:

[0136] rmi_pageFields[1]=new rmi_fieldMap(“contactFirstName”, “text”,“wallet_b_fname_first”);

[0137] rmi_pageFields[2]=new rmi_fieldMap(“contactLastName”, “text”,“wallet_b_fname_last”);

[0138] where “wallet_b_fname_first” is the wallet database field namefor the user's first name.

[0139] However, in the supported merchant file, the user's first name isidentified as “contactFirstName”. Thus, the present invention maps thefields in the wallet database to the fields in the supported merchantfile so that each merchants order form may be automatically filled outwhen a user shops at a supported merchant web site.

[0140] With reference now to FIGS. 15-17, an exemplary check-out processwill now be described. As different merchants may have differentcheck-out processes and provide different check-out web pages, thefollowing description is merely illustrative and not intended to limitthe scope of or otherwise define the present invention. In addition, thefollowing description does not track the entire on-line shopping process(which may also vary from merchant to merchant), but only the check-outprocess, which generally begins after the user has selected a “CheckOut” or other similar button on a merchant web page.

[0141] When a user launches their Internet browser, the interface object40 automatically establishes a connection between the user's computer 50and the server 102. Various user data is downloaded by the server 102 tothe user's computer 50. The user may cause the Internet browser tonavigate to any Internet address by typing the address in the URLaddress window 26 (see, e.g., FIG. 11), or by selecting a link on a webpage. Regardless of how the browser is caused to navigate the Internet(move from web site to web site), the shopping assistant code interceptsthe URL for each Internet site navigated to by the user, and comparesthat URL with the supported merchant data file. If a match is found, theshopping assistant code provides a user perceptible indicator on theshopping assistant button 144 such as, for example, a yellow circle,that indicates that the user has navigated to a supported merchant website. The shopping assistant code also makes a request to the server 102for a download of a file containing rules and mapping data for thatmerchant and that provides details on that merchant's check-out process.

[0142] The shopping assistant code also intercepts each web pagereceived by the browser to determine the type of web page, e.g., abilling page, e-mail address request, credit card information request,etc., by looking at the HTML code and the http request headers. Thatinformation was obtained during the provider's selection of merchantsand creation of the supported merchant data files. Using the merchant'srules and mapping file, the shopping assistant code can determine thespecific page being served and how the user's information should beprovided in that page.

[0143] If the shopping assistant code determines that the user's walletis required for a particular page, it opens a security key window 3000in the user's browser interface 20 asking the user to enter a securitykey (SK) in a data entry window 3020, as depicted in FIG. 15. Once theuser has entered a SK and selected a “Continue” button 3030, thatsecurity key is securely transmitted, preferably using https, by theuser's computer 50 to the server 102. The server 102 compares the userdata (e.g., ID and SK) with data previously stored in that user's walleton the wallet database 106. If the data matches, the SK is verified andan authorization is transmitted by the server 102 to the shoppingassistant code; a rejection is transmitted if the data does not match.The authorization may be provided as a wallet information window 3100,such as is depicted in FIG. 16. When a SK is successfully verified bythe server 102, a “secure cookie” is transmitted over SSL to the secureserver, and the user's on-line shopping session using his/her walletbegins when the “secure cookie” is set. The “secure cookie” isaggressively timed out, and is preferably valid for up to one (1) hour.

[0144] If the user desires to continue the check-out process using theshopping assistant functionality of the present invention, the user mayselect a “Continue” button 3130. If the user desires to check-out usingthe merchant's check-out process, the user may select a “Cancel” button3140. When the user selects the Continue button 3130, the shoppingassistant code retrieves the user's wallet from the wallet database 104on the server 102, and automatically fills in the merchant's check-outweb page 2100, depicted in FIG. 17. The user's wallet is securelytransmitted by the server 102, preferably using https. The user'swallet, and thus the user's personal data, need not be stored on theuser's data storage device 52, but only in temporary memory (alsoreferred to herein as main memory or RAM) 60, and used by and inconnection with the shopping assistant code and functionality of thisembodiment of the present invention. The user's data may automaticallyexpire (e.g., after a predetermined time), or it may be flushed frommemory 60 when the user closes the browser.

[0145] Depending upon the type of web page displayed by the browser, theshopping assistant code provides the appropriate user data from theuser's wallet (temporarily data in RAM) to the web page. For example, ifthe shopping assistant code determines the web page is a “billingaddress” web page, the user's billing address data will be copied fromRAM to populate the fields in the billing address web page, andultimately communicated to the merchant's server. During the check-outprocess, the shopping assistant code operates in connection with themerchant rules and mapping file and with the user's wallet toautomatically provide user data required by the various merchantcheck-out web pages.

[0146] The wallet database 106 may contain only wallet data oralternatively, the wallet data may be located in a database with otherdata. While the wallet is preferably used by and in connection with theshopping assistant button 144 and functionality, the wallet may also beused by applications other than shopping assistant such as, for example,bill paying, shopping without shopping assistant, and in connection withvirtually any on-line transaction that requires that the user enterpersonal data. The wallet provides secure transmission and handling ofthe user's data and makes that data available for use by the user inconnection with various on-line transactions without unnecessarilycompromising the security of that data.

[0147] Once a user has set up a wallet, the functionality provided inaccordance with this embodiment of the present invention is nowavailable to the user as the user shops on-line. Preferably, the on-lineshopping functionality is available for use in connection with asupported merchant regardless of the Internet site to which the user isconnected (via the Internet browser). Thus, the user need not beconnected to the provider's Internet site, or even to a supportedmerchant's web site. The shopping assistant code handles allcommunication between the user (the user's computer 50), the server 102,the wallet database 104, and the merchant's Internet site and check-outweb page(s).

[0148] In accordance with another embodiment of the present invention, abutton 44 (i.e., interface object) may be added to a browser interfacetoolbar, such as an interface object toolbar 42 (see, e.g., FIG. 4) by aparty other than the provider 102. For example, a link may be providedon a corporate web site that enables visitors to that web site to add abutton 44 to their interface object toolbar 42 that would provide aone-click link to that corporate web site from the browser interface 20.Corporations, or any entity hosting a web site, may sponsor the provider1100 because the addition of the corporate button to the interfaceobject toolbar 42 enables a user to return to that corporate web sitefrom any other web site with a single mouse click. The addition of thecorporate button to the browser interface (i.e., the toolbar 42) thusestablishes an affinity between a user and the corporate web site. Thecorporate sponsor designs the button (e.g., look (one-click button orpull-down menus), icon, etc.), and provides the button design and URLdata to the provider 100 for incorporation in a database maintained bythe provider and associated with browser interface. Thus, a corporatesponsor may have a button defined in the provider database.

[0149] If a visitor to the corporate web site wants to install thecorporate button in their browser interface 20, but does not have abrowser interface toolbar 42 installed, the present invention alsoenables installation of the browser interface toolbar 42 and corporatebutton 44 in the browser interface 20. On the other hand, the corporatebutton 44 may be added to a toolbar 22 of the browser interface 20, ormay be added as a button 44 of an interface object toolbar 42.

[0150] The present invention may also be used as a teaching tool. Forexample, the interface object toolbar 42 may include a plurality ofbuttons 44 which may be caused to change color, blink, highlight, etc.,to direct a user's attention to that button or to the functionalityprovided by that button.

[0151] The present invention may also enable a provider or corporatesponsor to notify a user of certain properties of the provider orcorporate sponsor when that user visits a competing website. Forexample, when a user visits an automotive website, the correspondingprovider property (e.g., provider Autos) would be highlighted to alertthe user of the availability of that feature at the provider website.Software may be provided on the user's computer to intercept the URLeach time the user causes the browser to navigate to a web site. Thatintercepted URL may be compared with a file containing a plurality ofurls for the provider properties.

[0152] Importantly, determining the web site to which the user hasnavigated at any particular instant is determined by the user's computeralone. Thus, no information regarding the user's activity on theInternet is communicated to any server.

[0153] It will be obvious to persons skilled in the art and from thedisclosure provided herein that the various embodiments of the presentinvention may be carried out using software provided on the user'scomputer and on the various servers.

[0154] It is to be understood that the present invention may beimplemented utilizing any number of computer technologies. For example,although the present embodiments are disclosed as operable in connectionwith the Internet, the present invention may be utilized over anycomputer network, including, for example, a wide area network.Similarly, the user computer 50 may be any device that may be coupled tothe network, including, for example, personal digital assistants,web-enabled cellular telephones, hard-wired telephones that dial intothe network, mobile computers, personal computers, Internet appliancesand the like. Furthermore, the servers described herein may be of anytype, running any software, and the software modules, objects andplug-ins described herein may be written in any programming language.Lastly, the database and storage devices described herein may utilizeany storage technology, including, for example, local computer memory,network attached storage, and any known storage medium, such as magneticor optical.

[0155] Thus, while there have been shown and described and pointed outfundamental novel features of the invention as applied to preferredembodiments thereof, it will be understood that various omissions andsubstitutions and changes in the form and details of the disclosedinvention may be made by those skilled in the art without departing fromthe spirit of the invention. It is the intention, therefore, to belimited only as indicated by the scope of the claims appended hereto.

What is claimed is:
 1. A method of facilitating on-line shopping by ashopper at a supported merchant web site, the shopper having a computerwith an Internet browser installed thereon, said method comprising thesteps of: (a) communicating computer code to add a shopping assistantbutton to a toolbar of the Internet browser; (b) creating a wallet forthe shopper in a database on a server, the wallet being secured by afirst security key previously received from the shopper; (c) receiving asecond security key from the shopper; (d) comparing the first securitykey and the second security key; and (e) if the first and secondsecurity keys are the same, communicating the wallet to the computer. 2.A method as recited by claim 1, further comprising the step of providinga supported merchant rules and mapping file for the supported merchant,and wherein said step (a) further comprises communicating computer codefor automatically filling out a check-out web page of the supportedmerchant web site using the wallet and the supported merchant rules andmapping file.
 3. A method as recited by claim 1, wherein the shoppingassistant button comprises a pull-down menu.
 4. A method as recited byclaim 1, wherein said step (b) comprises: communicating a web page fordisplay by the Internet browser; receiving shopper data entered by theshopper in the web page; and storing at least a portion of the shopperdata as a wallet for the shopper in the database.
 5. A method as recitedby claim 1, wherein said step (a) further comprises communicatingcomputer code to monitor the Internet navigation of the Internet browserby intercepting an Internet address for each Internet site to which theInternet browser is caused to navigate.
 6. A method as recited by claim5, further comprising the step of providing a supported merchant rulesand mapping file for the supported merchant, and wherein said step (a)further comprises communicating computer code for automatically fillingout a check-out web page of the supported merchant web site using thewallet and supported merchant rules and mapping file.
 7. A method asrecited by claim 1, further comprising the step of providing a supportedmerchant rules and mapping file for the supported merchant, and whereinsaid step (a) further comprises communicating computer code fordetermining if a merchant web site is a supported merchant web site. 8.A method as recited by claim 7, wherein said step (a) further comprisesdetermining if a merchant web site is a supported merchant web site bycomparing the supported merchant data file with an Internet address foreach Internet site to which the Internet browser is caused to navigate.9. A method as recited by claim 7, wherein the computer code provides anindicator for the shopping assistant button when the Internet browser isat a supported merchant web site.
 10. A method as recited by claim 1,wherein said step (a) further comprises communicating computer code forintercepting each web page received by the browser and determining thetype of web page by HTML code and http request headers provided in theintercepted web page.
 11. A method as recited by claim 1, wherein saidstep (e) comprises communicating a secure cookie to the computer.
 12. AnInternet browser interface displayable by an Internet browser on acomputer display comprising: a toolbar; and a shopping assistant buttonin said toolbar and defined by computer code operable with a processorof the computer for: intercepting an Internet address for each Internetsite to which the Internet browser is caused to navigate; determining ifa web site to which the Internet browser is caused to navigate is asupported merchant web site; and if the web site is a supported merchantweb site, automatically filling out a check-out web page of thesupported merchant web site using a wallet and a supported merchantrules and mapping file.
 13. An Internet browser interface as recited byclaim 12, wherein said determining step comprises determining if a website to which the Internet browser is caused to navigate is a supportedmerchant web site by comparing a supported merchant data file with anInternet address for each Internet site to which the Internet browser iscaused to navigate.
 14. An Internet browser interface as recited byclaim 12, wherein said shopping assistant button comprises a pull-downmenu.
 15. An Internet browser interface as recited by claim 12, whereinthe computer code is further operable with the processor for adding atoolbar and the shopping assistant button to said Internet browserinterface.
 16. An Internet browser interface as recited by claim 12,wherein said shopping assistant button provides an indicator when theInternet browser is caused to navigate to a supported merchant web site.17. An Internet browser interface as recited by claim 12, wherein thecomputer code is further operable with the processor for interceptingeach web page received by the browser and determining the type of webpage by HTML code and http request headers provided in the interceptedweb page.
 18. A system for facilitating on-line shopping by a shopperhaving a computer with an Internet browser, said system comprising: aserver comprising: a data storage device having a database thereon; anda processor operable with software for: communicating shopping assistantcomputer code to add a shopping assistant button to a toolbar of theInternet browser; receiving wallet data including a first security keyfrom the shopper and creating a wallet for the shopper in the database,the wallet being secured by the first security key; receiving a secondsecurity key from the shopper; comparing the first security key and thesecond security key; and if the first and second security keys are thesame, communicating the wallet to the computer.
 19. A system as recitedby claim 18, wherein said server is a secure server.
 20. A system asrecited by claim 18, wherein said processor is further operable withsoftware for providing a supported merchant rules and mapping file whenthe shopper has caused the Internet browser to navigate to a supportedmerchant web site, and wherein the shopping assistant code forautomatically fills out a check-out web page of the supported merchantweb site using the wallet and supported merchant rules and mapping file.21. A method of facilitating on-line shopping by a shopper at asupported merchant web site, the shopper having a computer with anInternet browser installed thereon, said method comprising the step ofcommunicating computer code to add a shopping assistant button to theInternet browser, wherein said computer code intercepts an Internetaddress for each Internet site to which the Internet browser is causedto navigate, determines if a web site to which the Internet browser iscaused to navigate is a supported merchant web site, and if the web siteis a supported merchant web site, automatically fills out a check-outweb page of a supported merchant web site using a wallet and a supportedmerchant rules and mapping file.
 22. A method as recited by claim 21,wherein said communicating step further comprises communicating computercode to add a shopping assistant button and a toolbar of the Internetbrowser.
 23. A method as recited by claim 21, wherein said shoppingassistant button further provides an indicator when the Internet browseris caused to navigate to a supported merchant web site.
 24. A method asrecited by claim 21, wherein said computer code determines if a web siteto which the Internet browser is caused to navigate is a supportedmerchant web site by comparing a supported merchant data file with anInternet address for each Internet site to which the Internet browser iscaused to navigate.
 25. A method of dynamically controlling an Internetbrowser interface displayable by a browser on a display of a computer, afile being located on a data storage device of the computer and defininga shopping assistant interface object, said method comprising the stepsof: (a) causing the file to open when a user of the computer and browseractivates the browser; (b) causing the browser to establish a connectionto a predetermined Internet site; (c) receiving in the file, from thepredetermined Internet site, information for defining all or part of theshopping assistant interface object; (d) displaying the shoppingassistant interface object along with the Internet browser interface onthe computer display while the browser is activated; and (e) preventingthe file from closing while the browser is activated.
 26. A method asrecited by claim 25, further comprising the steps of: (f) periodicallycausing the browser to establish a connection to the predeterminedInternet site; and (g) receiving in the file, from the predeterminedInternet site, additional information for defining all or part of theshopping assistant interface object.
 27. A method as recited by claim25, wherein said step (e) further comprises executing a program loop toprevent the file from closing.
 28. A method as recited by claim 27,further comprising the step of terminating the program loop when thebrowser is no longer activated.
 29. A method as recited by claim 25,wherein said step (b) comprises automatically causing the browser toestablish a connection to a predetermined Internet site.
 30. A method asrecited by claim 25, wherein said file contains computer code forintercepting an Internet address for each Internet site to which theInternet browser is caused to navigate, determining if a web site towhich the Internet browser is caused to navigate is a supported merchantweb site, and if the web site is a supported merchant web site,automatically filling out a check-out web page of a supported merchantweb site using a wallet and a supported merchant rules and mapping file.31. A method as recited by claim 25, wherein said file contains computercode for adding a shopping assistant button and a toolbar of theInternet browser.
 32. A method as recited by claim 25, wherein said filecontains computer code for providing an indicator when the Internetbrowser is caused to navigate to a supported merchant web site.
 33. Amethod as recited by claim 25, wherein said files contains computer codefor determining if a web site to which the Internet browser is caused tonavigate is a supported merchant web site by comparing a supportedmerchant data file with an Internet address for each Internet site towhich the Internet browser is caused to navigate.
 34. A method ofcausing an Internet browser to access a predetermined Internet site,said method comprising the steps of: (a) providing a file on a computerincluding a definition of a shopping assistant interface object andinstructions for the Internet browser; and (b) upon activation of theInternet browser by a user of the computer, and in response to theinstructions in the file, automatically causing the Internet browser toestablish a connection to the predetermined Internet site.
 35. A methodas recited by claim 34, further comprising the step of receiving in thefile, from the predetermined Internet site, information for defining allor part of the shopping assistant interface object.
 36. A method asrecited by claim 34, wherein said file contains computer code forintercepting an Internet address for each Internet site to which theInternet browser is caused to navigate, determining if a web site towhich the Internet browser is caused to navigate is a supported merchantweb site, and if the web site is a supported merchant web site,automatically filling out a check-out web page of a supported merchantweb site using a wallet and a supported merchant rules and mapping file.37. A method as recited by claim 34, wherein said file contains computercode for adding a shopping assistant button and a toolbar of theInternet browser.
 38. A method as recited by claim 34, wherein said filecontains computer code for providing an indicator when the Internetbrowser is caused to navigate to a supported merchant web site.
 39. Amethod as recited by claim 34, wherein said files contains computer codefor determining if a web site to which the Internet browser is caused tonavigate is a supported merchant web site by comparing a supportedmerchant data file with an Internet address for each Internet site towhich the Internet browser is caused to navigate.
 40. An Internetbrowser interface displayable by an Internet browser on a computerdisplay and including an ActiveX control shopping assistant interfaceobject that is displayed with the Internet browser interface while thebrowser is activated and which provides a link to a predeterminedInternet site regardless of the Internet site to which the computer isconnected via the browser.
 41. An Internet browser interface as recitedby claim 40, wherein said ActiveX control shopping assistant interfaceobject causes the Internet browser to establish a connection to thepredetermined Internet site.
 42. An Internet browser interfacedisplayable by an Internet browser on a computer display and including aPlug-in shopping assistant interface object that is displayed with theInternet browser interface while the browser is activated and whichprovides a link to a predetermined Internet site regardless of theInternet site-to which the computer is connected via the browser.
 43. AnInternet browser interface as recited by claim 42, wherein said Plug-inshopping assistant interface object causes the Internet browser toestablish a connection to the predetermined Internet site.
 44. A methodof controlling an Internet browser interface displayable by an Internetbrowser on a display of a computer, the Internet browser enabling a userof the computer and Internet browser to access and navigate the Internetand to receive and display on the computer display one or more web pagesfrom one or more Internet sites, including the display of a web pagefrom a predetermined Internet site, the Internet browser having at leastone Internet browser toolbar having at least one toolbar buttonproviding a predetermined functionality to the user of the computer andInternet browser, said method comprising the steps of: (a) providing, atthe predetermined Internet site, access to a program for controlling theInternet browser interface; and (b) making available for downloading bythe predetermined Internet site, a file for displaying of a user toolbarand a shopping assistant interface object as part of the Internetbrowser interface.
 45. A method as recited by claim 44, wherein the filecomprises an ActiveX control.
 46. A method as recited by claim 44,wherein the file comprises a Plug-in.
 47. A method as recited by claim44, wherein the shopping assistant interface object is a toolbar button.48. A method as recited by claim 44, wherein said file contains computercode for intercepting an Internet address for each Internet site towhich the Internet browser is caused to navigate, determining if a website to which the Internet browser is caused to navigate is a supportedmerchant web site, and if the web site is a supported merchant web site,automatically filling out a check-out web page of a supported merchantweb site using a wallet and a supported merchant rules and mapping file.49. A method as recited by claim 44, wherein said file contains computercode for adding a shopping assistant button and a toolbar of theInternet browser.
 50. A method as recited by claim 44, wherein said filecontains computer code for providing an indicator when the Internetbrowser is caused to navigate to a supported merchant web site.
 51. Amethod as recited by claim 44, wherein said files contains computer codefor determining if a web site to which the Internet browser is caused tonavigate is a supported merchant web site by comparing a supportedmerchant data file with an Internet address for each Internet site towhich the Internet browser is caused to navigate.
 52. A system forcontrolling an Internet browser interface displayable by an Internetbrowser on a display of a computer, said system comprising: a server,said server including a program accessible over the Internet by a userof the computer for controlling the Internet browser interface; and afile downloadable by said server to the computer for controlling theInternet browser interface, wherein said downloadable file causes a usertoolbar and a shopping assistant interface object to be added to thebrowser interface and to be displayed on the display of the computer aspart of the Internet browser interface while the Internet browser isactivated regardless of the Internet site to which the computer isconnected via the Internet browser.
 53. A system as recited by claim 52,wherein said shopping assistant interface object comprises an ActiveXcontrol.
 54. A system as recited by claim 52, wherein said shoppingassistant interface object comprises a Plug-in.
 55. A system as recitedby claim 52, wherein said file contains computer code for interceptingan Internet address for each Internet site to which the Internet browseris caused to navigate, determining if a web site to which the Internetbrowser is caused to navigate is a supported merchant web site, and ifthe web site is a supported merchant web site, automatically filling outa check-out web page of a supported merchant web site using a wallet anda supported merchant rules and mapping file.
 56. A system as recited byclaim 52, wherein said file contains computer code for adding a shoppingassistant button and a toolbar of the Internet browser.
 57. A system asrecited by claim 52, wherein said file contains computer code forproviding an indicator when the Internet browser is caused to navigateto a supported merchant web site.
 58. A system as recited by claim 52,wherein said files contains computer code for determining if a web siteto which the Internet browser is caused to navigate is a supportedmerchant web site by comparing a supported merchant data file with anInternet address for each Internet site to which the Internet browser iscaused to navigate.